Bar code symbol reading device having intelligent data communication interface to a host system

ABSTRACT

A data transmission subsystem, operably coupled to the bar code reading engine, communicates such symbol character data to the communication interface of a host system over a communication link therebetween. The data transmission subsystem implements a plurality of different communication interfaces. During an interface configuration mode of operation, the data transmission subsystem is able to automatically configure itself such that its interface is suitable for communication to the communication interface of the host system. Moreover, the device is thus capable of interfacing to a variety of different host devices in an automatic and error free manner with minimal human involvement, thus providing significant advantages over the prior art bar code symbol reading devices.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to bar code symbol reading devices thatprovide data to one or more host systems (for example, personalcomputers, point-of-sale (POS) stations, inventory management systems,document tracking systems, package tracking (and routing and delivery)systems, other retail solutions (such as price look-up kiosks), etc.)

2. Brief Description of the Prior Art

Bar code symbols have become widely used in many environments such as,for example, as a form of data input to personal computers,point-of-sale (POS) stations, inventory management systems, documenttracking system, package tracking (and routing and delivery) systems,other retail solutions (such as price look-up kiosks), a diverse rangeof data acquisition and control applications, etc.). To meet the growingdemands of this technological innovation, bar code symbol readers ofvarious types have been developed for reading bar code symbols andproducing symbol character data for use as input in such automated dataprocessing systems.

In general, it is desirable to enable a bar code symbol reading deviceto interface to a variety of different host devices. This feature allowsthe bar code symbol reading device to be used in a variety ofapplications that utilize such different host devices. Moreover, it isdesirable to make the configuration of such an interface automatic withminimal human involvement.

Heretofore, several mechanisms for interfacing bar code symbol readingdevices to host systems have been proposed.

Many commercially available bar code symbol reading devices distributeconfiguration manuals (or guides) that include bar code labels fordifferent device-host configurations (and parameters). The bar codelabels encode data, which is read by the bar code scanning device andused in an internal configuration routine to select and configure theinterface between the bar code scanning device and the host system.Whenever the user desires to use the scanning device with a differenthost system, the user must locate the appropriate guide/label and readthe data encoded by the label, which may be problematic in the eventthat the user has misplaced (or lost) the guide/label or an error occursin the label reading operation.

In U.S. Pat. No. 5,258,604, a system is disclosed which implements a barcode scanning device which is configured to accept any of a plurality ofdifferently configured interface boards in its handle, wherein each typeof interface board is specially adapted to mate with an associated hostdevice. The decoder in the scanner polls the interface board uponpower-up and reads an identification code from the particular interfaceboard which the user has inserted. The identification code is used bythe decoder to access configuration and formatting data from an on-boardmemory in order to transmit data to the interface board and ultimatelyto the host device in the required manner. This requires a user to haveto swap electrical boards inside the scanner device whenever he desiresto use the scanner with a different host device, which is unwieldy andpotentially damaging to the boards due to electrostatic discharge (ESD)phenomena.

In U.S. Pat. No. 5,875,415, a system is disclosed which implements a barcode scanning device that formats bar code symbol character data into aspecific SDCI data format. An interface cable, which is specific to agiven type of host device, includes a host protocol and translationmeans that configures the bar code symbol data in the SDCI format into aformat required by the given type of host device and transmits such datato the host device. Note that each different type of host device willrequire the use of a differently configured interface cable in order toenable communication between the bar code scanning device and hostdevice, thus greatly increasing the cost of the interface cablesthemselves. Moreover, whenever the user desires to use the scanningdevice with a different host system, the user must locate (or purchase)the appropriate interface cable, which may be problematic and costly inthe event that the user has misplaced (or lost) the required interfacecable.

In U.S. Pat. No. 5,905,249, a system is disclosed which providesdifferent connecting cables and labels for different bar code scanningdevices/host system pairs. The labels are bar code labels (or RFID tags)that encode data which is read by the bar code scanning device and usedin an internal configuration routine to configure the parameters of theinterface between the bar code scanning device and the host system, suchas baud rate, data format settings, hardware and software handshaking,UPC data format, etc.). Whenever the user desires to use the scanningdevice with a different host system, the user must locate (or purchase)the appropriate interface cable/label and read the data encoded by thelabel, which may be problematic in the event that the user has misplaced(or lost) the label for the cable or an error occurs in the labelreading operation.

Thus, there is a great need in the art for a bar code reading devicewith an improved communication interface that enable the bar code symbolreading device to interface to a variety of different host devices in anautomatic and error free manner with minimal human involvement.

OBJECTS AND SUMMARY OF THE INVENTION

Accordingly, it is a primary object of the present invention to providean improved method of and device for reading bar code symbols thatperforms automatic configuration of a communication interface of thedevice to thereby enable a data communication link between the deviceand a host system, while overcoming the above described shortcomings anddrawbacks of prior art devices and techniques.

A further object of the present invention is to provide such a devicethat implements a plurality of different communication interfaces andoperates, during an interface configuration mode, to automaticallyselect at least one of the plurality of different communicationinterfaces and test each selected communication interface to ascertainif the given communication interface corresponds to the communicationinterface of the host system.

A further object of the present invention is to provide a device thatcarries out such automatic interface configuration operations when thedevice is initially powered up.

A further object of the present invention is to provide a device thatcarries out such automatic interface configuration operations to enablesubsequent data communication between the device and the host system.

It is yet another object of the present invention to provide a devicethat carries out such automatic interface configuration operations toprovide a versatile bar code symbol reading device that is capable ofoperably interfacing to a plurality of diverse host systems with minimalhuman involvement in configuring such diverse interfaces.

It is yet another object of the present invention to provide a devicethat carries out such automatic interface configuration operations, inwhich the enabled communication interface of the device and thecommunication interface of the host system provides a wireless data link(such as an infra-red link, a Bluetooth RF link, and an IEEE 802.11b RFlink) between the device and the host system.

A further object of the present invention is to provide a device thatcarries out such automatic interface configuration operations, in whichthe enabled communication interface of the device and the communicationinterface of the host system provides a wired serial data link (such asa keyboard wedge link, an RS-232 link, USB link, an IEEE 1394 link, anRS-422 link, and a RS-485 link) between the device and the host system.

A further object of the present invention is to provide a device thatcarries out such automatic interface configuration operations, in whichthe enabled communication interface of the device and the communicationinterface of the host system provides a standard communication link(such an OCIA link, an IBM 46XX link, a Light Pen Emulation link, and aLTPN link) between the device and the host system.

It is yet another object of the present invention to provide a devicethat carries out such automatic interface configuration operations, inwhich the reading of a bar code symbol and subsequent communication ofthe symbol character data corresponding thereto to the host systemoccurs automatically without the need for human interaction to activatesuch operations.

A further object of the present invention is to provide a device thatcarries out such automatic interface configuration operations, in whichthe reading of the bar code symbol occurs automatically without the needfor human interaction to activate such operation, and the subsequenttransfer of the symbol data corresponding thereto to the host system ismanually-activated by a user interaction with a data transmissionswitch.

A further object of the present invention is to provide a device thatcarries out such automatic interface configuration operations, in whichthe reading of the bar code symbol and the subsequent transfer of thesymbol data corresponding thereto to the host system ismanually-activated by user interaction with a trigger mechanism.

It is yet another object of the present invention to provide a bar codesymbol reading device that maintains a status register that storesinformation related to the establishment of a communication link betweenthe device and a host system over a specific interface implemented bythe device, and wherein the device reads the information stored in saidstatus register during automatic configuration of the communicationinterfaces implemented by the device.

It is yet another object of the present invention to provide a bar codesymbol reading device that maintains a status register that storesinformation indicative of the exchange of predetermined data packets inan enumeration sequence that establishes a communication link betweenthe device and a host system over a specific interface implemented bythe device, and wherein the device reads the information stored in saidstatus register during automatic configuration of the communicationinterfaces implemented by the device.

It is yet another object of the present invention to provide a bar codesymbol reading device that tests the signal levels of a givencommunication interface implemented by the device during automaticconfiguration of the communication interfaces implemented by the device.

It is yet another object of the present invention to embody a subsystemthat carries out such automatic interface configuration operations in awand-type scanner, hand-held scanner, presentation scanner, electroniccash register systems and other point-of-sale terminals, other retailsolutions such as price look-up kiosks, and data acquisition systems(for example, those involving inventory control, patient care inhospitals and other medical applications).

These and further objects of the present invention will become apparenthereinafter and in the claims to Invention.

BRIEF DESCRIPTION OF THE DRAWINGS

For a fuller understanding of the Objects of the Present Invention, theDetailed Description of the Illustrated Embodiments of the PresentInvention should be read in conjunction with the accompanying drawings,wherein:

FIG. 1 is a plan view of an exemplary hand-holdable laser scanning barcode symbol reading device that embodies the present invention.

FIG. 2 is a pictorial illustration of a data transmission subsystemwhich is embodied with the bar code symbol reading device of FIG. 1 toprovide automatic configuration of the communication interface betweenthe bar code symbol reading device and a host system according to thepresent invention.

FIG. 3 is a logical block diagram of a generalized system design of alaser-based bar code symbol reading device according to the presentinvention, including: an object detection subsystem 2; a laser-based barcode symbol detection subsystem 3; a laser-based bar code symbol readingsubsystem 4; a data transmission subsystem 5; a state indicationsubsystem 6; a data transmission activation switch 155 integrated withthe scanner housing in part or whole; a mode-selection switch or sensor7 integrated with the scanner housing in part or whole; and a systemcontrol subsystem 8 operably connected to the other subsystems describedabove. In general, the bar code symbol reading device has a number ofpreprogrammed operational states (or modes), namely: an InterfaceConfiguration State; an Object Detection State; a Bar Code SymbolDetection State; a Bar Code Symbol Reading State; and a DataTransmission State.

FIGS. 4A and 4B illustrate an exemplary system design and correspondingstate diagram, respectively, of a bar code symbol reading deviceaccording to the present invention, including a number of cooperatingcomponents, namely: control circuitry 411A and a control module 411Bthat cooperate to perform system control operations to effectuate thesystem control as described herein; a scanning circuit 413 that drivesthe VLD and laser beam scanning mechanism to thereby produce the scanpattern of the visible laser beam; a scan photoreceiving circuit 415(including one or more photodetectors and pre-amplification circuitry)for detecting laser light reflected off a scanned bar code symbol andproducing an electrical signal D₁ indicative of the detected intensity;an analog-to-digital (A/D) conversion circuit 417 for converting analogscan data signal D₁ into a corresponding digital scan data signal D₂; abar code symbol (presence) detection circuit 419 for processing digitalscan data signal D₂ in order to automatically detect the digital datapattern of a bar code symbol on the detected object and produce controlactivation signal A₂; a symbol decoding module 421 for processingdigital scan data signal D₂ so as to determine the data represented bythe detected bar code symbol, generate symbol character datarepresentative thereof, and produce activation control signal A₃; a datatransmission subsystem 423 for transmitting data (including the symbolcharacter data generated by the symbol decoding module) to the hostsystem over the communication link therebetween, wherein the datatransmission systems performs operations that automatically configurethe communication interfaces implemented therein to enable datacommunication over the communication link between the device 151′ andthe host system; means (e.g. an object sensing circuit 425 and an objectdetection circuit 427) for producing a first activation control signalindicative of the detection of an object in at least a portion of theobject detection field of the device; a manually-activatable datatransmission switch 155′ for generating control activation signal A₄ inresponse to activation of the switch; a mode select switch 7′ forgenerating control activation signal A₅ in response to activation of theswitch; and state indications (e.g. LEDs) 150′ that provide a visibleindication of the operating state (e.g., object detection state, a barcode symbol presence detection state, bar code symbol reading state, anddata transmission state) of the device 151′.

FIG. 5 is a functional block diagram that illustrates an embodiment ofthe data transmission subsystem of a bar code symbol reading deviceaccording to the present invention that supports automatic configurationof three exemplary wired serial interfaces (e.g., USB, RS-232, and KBW).

FIGS. 6A and 6B is a flow chart illustrating the operations of thecommunication control module 557 of FIG. 5 in the interfaceconfiguration mode whereby the three serial interfaces (e.g., USB,RS-232, and KBW) implemented by the data transmission subsystem 523 areautomatically configured for operation.

FIG. 7 is a pictorial illustration of a typical RS-232 waveform (in 8N1format), which includes a Start Bit (Logic 0/Space/+10V), 8 Data bits(the least significant bit is sent first) and a Stop Bit (Logic1/Mark/−10V); this waveform applies to the Transmit Data (TD) andReceive Data (RD) lines of the RS-232 interface.

FIGS. 8A and 8B are pictorial illustrations of the waveforms implementedby a KBW interface (suitable for AT and PS/2-style keyboards;Communication from the KBW interface to the host system is shown in FIG.8A; Communication from the host system to the KBW interface is shown inFIG. 8B.

FIG. 9A is a pictorial illustration of an exemplary interface cable thatuniquely supports a USB link between the bar code symbol reading device151″ of FIG. 5 and the USB port of a host system, including a 10-pinmodular jack that plugs into the communication port 559 of the bar codesymbol reading device 151″ and USB A type connector that plugs into theUSB port of the host system.

FIG. 9B is a pictorial illustration of an exemplary interface cable thatuniquely supports an RS-232 link between the bar code symbol readingdevice 151″ of FIG. 5 and the RS-232 (e.g., serial) port of a hostsystem, including a 10-pin modular jack that plugs into thecommunication port 559 of the bar code symbol reading device 151″ and9-Pin D-Type Connector that connects to the RS-232 serial port of thehost system.

FIG. 9C is a pictorial illustration of an exemplary interface cable thatuniquely supports an Keyboard Wedge link between the bar code symbolreading device 151″ of FIG. 5 and the keyboard port of a host system (inaddition to an Keyboard link between a keyboard attached thereto and thesame keyboard port of the host system), including a 10-pin modular jackthat plugs into the communication port 559 of the bar code symbolreading device 151″ and a “Y” termination with a 5-pin DIN femaleconnector on one end, and a 6-pin mini DIN male on the other; the DINconnectors are coupled to a keyboard and to the keyboard port of thehost system.

FIGS. 10A and 10B illustrate an alternative embodiment of the presentinvention wherein a bar code symbol reading device 151′″ is operablycoupled to a base unit 211 by way of a communication link 213therebetween; the base unit 211 may be used to mechanically support thebar code symbol reading device 151′″ as illustrated in FIG. 10B orfunction solely as a communications interface adapter between the barcode symbol reading device 151′″ and the host system; the base unit 211includes an automatically-configurable data transmission subsystem 523that supports automatic configuration of three exemplary wired serialinterfaces (e.g., USB, RS-232, and KBW) to thereby enable communicationbetween the base unit 211 and the host system.

DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS OF THE PRESENTINVENTION

Referring to the figures in the accompanying Drawings, the variousillustrative embodiments of the bar code symbol reading system of thepresent invention will be described in great detail, wherein likeelements will be indicated using like reference numerals.

An exemplary hand-holdable laser scanning bar code symbol reading device151 is shown in FIG. 1. The device 151 includes a hand-supportablehousing 161 having a head portion 161A that encloses a bar code symbolreading engine 53 that produces a laser scanning pattern (which may bean multi-line omni-directional pattern or a single line pattern) passingthrough light transmission window 168 for the purpose of scanning barcode symbols on objects located proximate to the laser scanning pattern,while preventing unintentional scanning of bar code symbols on objectslocated outside thereof. After the successful reading of a bar codesymbol by the engine 53, symbol character data (corresponding to thesame bar code symbol) is transmitted from the engine 53 to a host system(e.g. electronic cash register system, data collection device, or otherdata storage/processing device, etc.) over a communication linktherebetween (which, for example, may be a wireless data link (such asan infra-red link, Bluetooth RF link or IEEE 802.11b RF link) or wiredserial data link (such as keyboard wedge ink—for example supporting XT-,AT- and PS/2-style keyboard protocols, an RS-232 link, USB link, aFirewire (or IEEE 1394) link, an RS-422 link, and RS-485 link), a wiredparallel data bus, or other common wired interface links (such as anOCIA link, an IBM 46XX link, a Light Pen Emulation link, a LTPN link)).

The reading of a bar code symbol and subsequent transfer to the hostsystem of the symbol character data corresponding thereto may occurautomatically (without the need for human interaction to activate suchoperations). Alternatively, the reading of the bar code symbol may occurautomatically (without the need for human interaction to activate suchoperation) and the subsequent transfer to the host system of the symboldata corresponding thereto may be activated by a manually-activated datatransmission switch as described in detail in co-pending U.S. patentapplication Ser. No. 09/204,176 filed Dec. 3, 1998 (108-027USA000) andco-pending U.S. patent application Ser. No. 09/452,976 filed Dec. 2,1999 (108-078USA000); incorporated by reference above in their entirety.In another alternative, the reading of the bar code symbol andsubsequent transfer to the host system of the symbol data correspondingthereto may be activated by a manual trigger or like mechanism, asdisclosed, for example, in U.S. Pat. Nos. 5,828,048; 5,828,049;5,825,012; 5,808,285; 5,796,091; 5,789,730; 5,789,731; 5,777,315;5,767,501; 5,736,482; 5,661,292; 5,627,359; 5,616,908; 5,591,953;5,557,093; 5,528,024; 5,525,798, 5,484,992; 5,468,951; 5,425,525;5,240,971; 5,340,973; 5,260,553; incorporated herein by reference.

According to the present invention, the data transmission subsystem ofthe bar code symbol reading device 151, which is responsible fortransmitting symbol character data from the device 151 to the hostsystem, implements a plurality of different interfaces as shown in FIG.2. During system configuration, an operator couples the device 151 to ahost system that includes an interface corresponding to (i.e., suitablefor communication with) one interface of the plurality of differentinterfaces implemented by the device 151. During an interfaceconfiguration mode of operation, which is preferably carried out whenthe device 151 is initially powered up, the data transmission subsystemautomatically cycles though one or more of the interfaces implementedtherein whereby, for a given interface, the data transmission subsystemselectively activates the given interface (while disabling the otherinterfaces) and tests the communication link between the given interfaceand the host system to ascertain if the given interface corresponds tothe interface of the host system. In other words, the data transmissionsubsystem automatically selects at least one of the plurality ofdifferent interfaces implemented therein and tests each selectedinterface to ascertain if the selected interface corresponds to thecommunication interface of the host system. Upon detecting that giveninterface corresponds to the interface of the host system, the interfaceconfiguration mode of operation ends, thereby enabling datacommunication between the bar code symbol reading device 151 and thehost system over the given interface. In this manner, the datatransmission subsystem of bar code symbol reading device 151 is able toautomatically configure itself such that its interface is suitable forcommunication to the interface of the host system. Moreover, the barcode symbol reading device is thus capable of interfacing to a varietyof different host devices in an automatic and error free manner withminimal human involvement, thus providing significant advantages overthe prior art bar code symbol reading devices.

For example, consider the configuration shown in FIG. 2 wherein anoperator, during system configuration, couples the device 151 to a hostsystem that includes an interface corresponding to interface 1 of device151. During the interface configuration mode of operation, the bar codesymbol reading device 151 automatically cycles though one or more of theinterfaces implemented by the device 151. During one such cycle, thedevice 51 selectively activates interface 1 (while disabling the otherinterfaces 2 and 3) and tests the communication link between theinterface 1 and the host system to ascertain if interface 1 correspondsto interface of the host system. Upon detecting that interface 1corresponds to the interface of the host system, the interfaceconfiguration mode of operation ends, thereby enabling datacommunication between the bar code symbol reading device 151 and thehost system over interface 1. Note that the dotted lines of FIG. 2represent inactive communication paths that result from such interfaceconfiguration operations.

A generalized system design of a laser-based bar code symbol readingdevice 151′ according to the present invention is shown in FIG. 3,including: an object detection subsystem 2, a laser-based bar codesymbol detection subsystem 3; a laser-based bar code symbol readingsubsystem 4; a data transmission subsystem 5; a state indicationsubsystem 6; a data transmission activation switch 155 integrated withthe housing in part or whole; a mode-selection switch or sensor 7integrated with the housing in part or whole; and a system controlsubsystem 8 operably connected to the other subsystems described above.In general, device 151′ has a number of preprogrammed operational states(or modes), namely: an Interface Configuration State; an ObjectDetection State; a Bar Code Symbol Detection State; a Bar Code SymbolReading State; and a Data Transmission State.

The data transmission subsystem 5 operates in the InterfaceConfiguration State to automatically cycle though one or more of theinterfaces implemented by the data transmission subsystem 5 whereby, fora given interface, the data transmission subsystem 5 selectivelyactivates the given interface (while disabling the other interfaces) andtests the communication link between the given interface and the hostsystem to ascertain if the given interface corresponds to the interfaceof the host system. Upon detecting that given interface corresponds tothe interface of the host system, the Interface Configuration Stateends, thereby enabling data communication between the bar code symbolreading device 151′ and the host system over the given interface. Inthis manner, the data transmission subsystem 5 of bar code symbolreading device 151′ is able to automatically configure itself such thatits communication interface is suitable for communication to thecommunication interface of the host system.

The object detection subsystem 2 operates in the Object Detection Stateto automatically detect if an object exists within the object detectionfield (which is proximate to the scanning field of the device 151) andautomatically generate a first control activation signal A₁ indicativethereof (for example, A₁=0 is indicative that an object has not beendetected within the object detection field, and A₁=1 is indicative thatan object has been detected within the object detection field). As shownin FIG. 3, the first control activation signal A₁ is provided to thesystem control subsystem 8 for detection, analysis and programmedresponse. In general, the object detection subsystem 2 can utilizeelectromagnetic radiation or acoustical energy, either sensible ornon-sensible by the operator, to automatically detect if an objectexists within the object detection field.

For example, the object detection subsystem 2 may project a pulsed beamof infrared light from the housing 161 into the object detection field,which is a three-dimensional volumetric expanse spatially coincidentwith the pulsed infrared light beam. When an object within the objectdetection field is illuminated by the pulsed infrared light beam,infrared light reflected therefrom will be returned toward the housing161, where it can be detected to derive an indication that an objectexists within the object detection field.

Alternatively, the object detection subsystem 2 may project a pulsedlaser beam of visible light from the housing 161 into the objectdetections filed, which is a three-dimensional volumetric expansespatially coincident with the pulsed laser beam. When an object withinthe object detection field is illuminated by the pulsed laser beam,light reflected therefrom will be returned toward the housing 161, whereit can be detected to derive an indication that an object exists withinthe object detection field. Details of exemplary object detectionsubsystems that implement this approach is described in U.S. Pat. No.4,639,606 to Boles, et al, and U.S. Pat. No. 4,933,538 to Heiman, et al.herein incorporated by reference in their entirety.

Alternatively, the object detection subsystem 2 may project ultrasonicenergy from the housing 161 into the object detection field, which is athree-dimensional volumetric expanse spatially coincident with suchultrasonic energy. When an object within the object detection field isilluminated by the ultrasonic energy, ultrasonic energy reflected therefrom will be returned toward the housing 161, where it can be detectedto derive an indication that an object exists within the objectdetection field.

Alternatively, the object detection subsystem 2 may utilize a passivetechnique that utilizes ambient light to detect that an object exists inthe object detection field. More specifically, when an object within theobject detection field is illuminated by ambient light, light reflectedtherefrom will be returned toward the housing 161, where it can bedetected to derive an indication that an object exists within the objectdetection field In addition, the object detection subsystem 2 mayutilize two different modes of object detection: a long range mode ofobject detection and a short range mode of object detection.

The laser-based bar code symbol presence detection subsystem 3 operatesin the Bar Code Symbol Detect State to automatically scan the scanningfield (with an omni-directional multiple line scan pattern or aunidirectional single line scan pattern) to detect if a bar code ispresent with the scanning field of the device 151, and automaticallygenerate a second control activation signal A₂ indicative thereof (forexample, A₂=0 is indicative that a bar code is not present within thescanning region, and A₂=1 is indicative that a bar code is presentwithin the scanning region). As shown in FIG. 3, the second controlactivation signal A₂ is provided to the system control subsystem 8 fordetection, analysis and programmed response.

The bar code symbol detection subsystem 3 does not carry out a bar codesymbol decoding process, but rather rapidly determines whether thereceived scan data signals represent a bar code symbol residing withinthe scan field. There are a number of ways in which to achieve bar codesymbol detection. For example, the bar code symbol detection subsystem 3may detect the first and second borders of the bar code symbol“envelope”. This is achieved by first processing a digital scan datasignal to produce digital “count” and “sign” data. The digital countdata is representative of the measured time interval (i.e. duration) ofeach signal level occurring between detected signal level transitionswhich occur in the digitized scan data signal. The digital sign data, onthe other hand, indicates whether the signal level between detectedsignal level transitions is either a logical “1”, representative of aspace, or a logical “0”, representative of a bar within a bar codesymbol. Using the digital count and sign data, the bar code symboldetection subsystem 3 identifies the first and second borders of the barcode envelope, and thereby determines whether or not the envelope of abar code symbol is represented by the scan data collected from the scanfield. When a bar code symbol envelope is detected, the bar code symboldetection subsystem 3 automatically generates a second controlactivation signal A₂=1, which is indicative that a bar code is presentwithin the scanning region.

The bar code symbol detection subsystem 3 may utilize two differentmodes of bar code symbol detection, namely: a long-range mode of barcode symbol detection and a short-range mode of bar code symboldetection as taught in U.S. Pat. No. 5,789,730, incorporated byreference herein in its entirety.

The laser-based bar code symbol reading subsystem 4 operates in the BarCode Symbol Reading State to automatically scan the scanning field (withan omni-directional multiple line scan pattern or a unidirectionalsingle line scan pattern) to detect and decode bar code symbols onobjects therein, produce bar code symbol character data representativeof the detected and decoded bar code symbol, and automatically generatea third control activation signal A₃ indicative of a successful decodingoperation (for example, A₃=0 is indicative that a successful decodingoperation has not occurred, and A₃=1 is indicative that a successfuldecoding operation has occurred). As shown in FIG. 3, the third controlactivation signal A₃ is provided to the system control subsystem 8 fordetection, analysis and programmed response.

The data transmission subsystem 5 operates in the Data TransmissionState to automatically transmit symbol character data (produced by theoperation of the bar code symbol reading subsystem 4 in the Bar CodeSymbol Reading State as described above) to the host system (to whichthe bar code reading device 151 is connected or to some other datastorage and/or processing device) over the communication linktherebetween. The communication link between the bar code symbol readingdevice and the host system may include a wireless data link (such as aninfra-red link, Bluetooth RF link or IEEE 802.11b RF link) or wiredserial data link (such as keyboard wedge link—for example supportingXT-, AT- and PS/2-style keyboard protocols, an RS-232 link, USB link, aFirewire (or IEEE 1394) link, an RS422 link, and RS-485 link), a wiredparallel data bus, or other common wired interface links (such as anOCIA link, IBM 46XX link, Light Pen Emulation link, LTPN link).

A more detailed description of exemplary implementations of suchsubsystems is set forth in U.S. Pat. Nos. 5,789,730 and 5,979,766 toRockstein et al., commonly assigned to assignee of the presentinvention, and herein incorporated by reference in their entirety.

Preferably, the operation of the data transmission system 5 in the DataTransmission State occurs when the system control subsystem 8 detectsthat either one of the following two conditions have been satisfied:

-   i) generation of the third control activation signal (e.g., A₃=1)    within a predetermined time period, indicative that the bar code    symbol has been read, and generation of data transmission control    activation control signal (e.g., A₄=1) produced from data    transmission activation switch 155 within a predetermined time    frame, indicative that the user desires the produced bar code symbol    character data to be transmitted to the host system or intended    device; or-   ii) generation of the third control activation signal (e.g., A₃=1)    within a predetermined time period, indicative that the bar code    symbol has been read, and generation of fifth control activation    signal A₅ (e.g., A₅=1).

Note that the mode-select sensor 7, in generating the fifth controlactivation signal (A₅=1) effectively overrides the data transmissionswitch 155, enabling the automatic transmission of bar code symbolcharacter strings to the host system.

Within the context of the system design shown in FIG. 3, the primaryfunction of the state-select sensor 7 is to generate the fifth controlactivation signal A₅, which selectively enables the automatictransmission of bar code symbol character strings to the host system.

In the preferred embodiment of the present invention, the bar codesymbol reading device 151 of the present invention operates in automaticdata transmission mode (e.g., A₅=1) as a hand-free presentation scannerwhereby the operator passes objects and associated bar code symbolsthough the scanning field of the device 151 in order to automaticallyread the bar code symbols therein and automatically transmitcorresponding bar code symbol character strings to the host system, andoperates in the manually-activated data transmission mode (e.g., A₅=0)as a hands-on scanner whereby the operator positions the scanner so thatan object and associated bar code symbol passes though the scanningfield of the device 151 in order to automatically read the bar codesymbol therein and then activate the transmission of the correspondingbar code symbol data string to the host computer upon timely manualactivation (e.g., A₄=1) of the data transmission activation switch.

In an alternate embodiment, the mode select sensor 7 (and its associatedcontrol function n overriding the data transmission switch 155) can beomitted. In this case, the operation of the data transmission subsystem5 in the Data Transmission State (in transmitting symbol character dataproduced in the Bar Code Symbol Reading State) occurs when the systemcontrol subsystem 8 detects that the following condition has beensatisfied: generation of the third control activation signal (e.g.,A₃=1) within a predetermined time period, indicative that the bar codesymbol has been read, and generation of data transmission controlactivation control signal (e.g., A₄=1) produced from data transmissionactivation switch 155 within a predetermined time frame, indicative thatthe user desires the produced bar code symbol character data to betransmitted to the host system or intended device. In thisconfiguration, the device 151 is not capable of operating as a hand-freepresentation scanner (whereby the operator passes objects and associatedbar code symbols though the scanning field of the device in order toautomatically read the bar code symbols therein and automaticallytransmit corresponding bar code symbol character strings to the hostsystem), yet operates solely in a manually-activated data transmissionmode as a hands-on scanner whereby the operator positions the scanner sothat an object and associated bar code symbol passes though the scanningfield of the device 151 in order to automatically read the bar codesymbol therein and then activate the transmission of the correspondingbar code symbol data string to the host computer upon timely manualactivation (e.g., A₄=1) of the data transmission activation switch 155′.

The state-select sensor 7 may utilize a manual or automated mechanism(or both) in generating the fifth control activation signal A₅. Themanual mechanism may include a manual two-state switch (e.g., button)mounted into the housing 161 of the device 151. In an initialconfiguration, the manual switch generates and provides the controlsignal A₅=0. When the user first presses the manual switch, the manualswitch generates and provides the control signal A₅=1. And when the userpresses the manual switch a second time, the manual switch generates andprovides the control signal A₅=0. Similar to the operation of a pushbutton light switch, subsequent presses of the manual switch follow thistwo-state activation sequence: A₅=0 to A₅=1 back to A₅=0. The automaticmechanism may include a sensor that detects whether the hand-holdablebar code symbol reading device 151 has been placed within a supportstand (or placed on a countertop or like surface in those instanceswhere it has been designed to do so) and automatically generates thecontrol signal A₅ in response thereto. For example, the state-selectsensor 7 may include a hall-effect sensor that automatically generatesthe signal A₅=1 upon detection that the hand-holdable bar code symbolreading device 151 has been placed within a support stand (or placed ona countertop or like surface in those instances where it has beendesigned to do so), and automatically generate the signal A₅=0 upondetection that the hand-holdable bar code symbol reading device 151 hasbeen removed from the support stand (or lifted off the countertop orlike surface in those instances where it has been designed to do so).

Within the context of the system design shown in FIG. 3, the stateindication subsystem 6 produces visual indication (e.g. color-codedlight) signals that are emitted from the scanner housing 161 to informthe user of the current state of operation of the system (e.g. “blue” toindicate the object detection state, “red” to indicate the bar codedetection state, “yellow” to indicate the bar code reading state, and“green” to indicate the symbol character data transmission state). Aswill be described in greater detail hereinafter, such state indicationsignals provide the user with visual feedback on the states of operationof the system, thereby improving the intuitiveness and facility ofoperation of the system in diverse application environments.

Within the context of the system design shown in FIG. 3, the systemcontrol subsystem 8 performs the following primary functions: (i)automatically receiving control activation signals A₁, A₂, A₃, A₄ and A₅(ii) automatically generating enable signals E₁, E₂, and E₃ and (iii)automatically controlling the operation of the other subsystems inaccordance with a system control program carried out by the systemcontrol subsystem 8 during the various modes of system operation.

A more detailed description of such data transmission control operationsis set forth in U.S. Pat. No. 6,283,375 to Wilz, Sr. et al., and pendingU.S. patent application Ser. No. 09/452,976 filed Dec. 2, 1999 (AttorneyDocket 108-078USA000), commonly assigned to assignee of the presentinvention, and herein incorporated by reference in their entirety.

Preferably, the laser-based bar code symbol detection subsystem 3 andthe laser-based bar code symbol reading subsystem 4 share a common laserscanning platform that is capable of producing the laser scanningpattern and passing it through the light transmission window 168 of thedevice. The laser scanning pattern may be an omni-directional multipleline scan pattern or a uni-directional single line scan pattern. Avariety of scanning platforms may be used to produce the laser scanningpattern. Generally, these platforms employ a laser diode, the light fromwhich is focused and collimated to form a scanning beam. A scanningmechanism (such as a oscillating mirror, multi-faceted rotating mirroror rotating holographic disk) and typically one or more light foldingmirrors produce the laser scan pattern and direct it through the lighttransmission window 168 of the device. Reflected laser light thatreturns back along the outgoing optical path is collected and directedto a detector, which generates electrical signals whose amplitudecorresponds to the intensity of the returned light directed thereto.Notably, the scanning mechanism can be realized in a variety ofdifferent ways. Thus, the term “scanning mechanism” as used herein isunderstood as any means for moving, steering, swinging or directing thepath of a light beam through space during system operation for thepurpose of obtaining information relating to an object and/or a bar codesymbol.

FIGS. 4A and 4B illustrate an exemplary system design of the bar codesymbol reading device 151′ according to the present invention includinga number of cooperating components, namely: control circuitry 411A and acontrol module 411B that cooperate to perform system control operationsto effectuate the system control as described herein; a scanning circuit413 that drives the VLD and laser beam scanning mechanism to therebyproduce the scan pattern of the visible laser beam; a scanphotoreceiving circuit 415 (including one or more photodetectors andpre-amplification circuitry) for detecting laser light reflected off ascanned bar code symbol and producing an electrical signal D₁ indicativeof the detected intensity; an analog-to-digital (A/D) conversion circuit417 for converting analog scan data signal D₁ into a correspondingdigital scan data signal D₂; a bar code symbol (presence) detectioncircuit 419 for processing digital scan data signal D₂ in order toautomatically detect the digital data pattern of a bar code symbol onthe detected object and produce control activation signal A₂; a symboldecoding module 421 for processing digital scan data signal D₂ so as todetermine the data represented by the detected bar code symbol, generatesymbol character data representative thereof, and produce activationcontrol signal A₃; a data transmission subsystem 423 for transmittingdata (including the symbol character data generated by the symboldecoding module) to the host system over the communication linktherebetween; means (e.g. an object sensing circuit 425 and an objectdetection circuit 427) for producing a first activation control signalindicative of the detection of an object in at least a portion of theobject detection field of the device; a manually-activatable datatransmission switch 155′ for generating control activation signal A₄ inresponse to activation of the switch; a mode select switch 7′ forgenerating control activation signal A₅ in response to activation of theswitch; and state indications (e.g. LEDs) 150′ that provide a visibleindication of the operating state (e.g., object detection state, a barcode symbol presence detection state, bar code symbol reading state, anddata transmission state) of the device 151′. A more detailed descriptionof such components is set forth in U.S. Pat. Nos. 5,789,730 and5,979,766 to Rockstein et al., incorporated by reference above in theirentirety.

As illustrated in the state diagram of FIG. 4B, upon system power up andinitialization, the device enters the Interface Configuration State (ormode) and the Object Detect State.

In the Interface Configuration State, the data transmission subsystem423 operates to automatically cycle though one or more of the interfacesimplemented by the data transmission subsystem 423 whereby, for a giveninterface, the data transmission subsystem 423 selectively activates thegiven interface (while disabling the other interfaces) and tests thecommunication link between the given interface and the host system toascertain if the given interface corresponds to the interface of thehost system. In other words, the data transmission subsystem 423automatically selects at least one of the plurality of differentinterfaces implemented therein and tests each selected interface toascertain if the selected interface corresponds to the communicationinterface of the host system. Upon detecting that the given interfacecorresponds to the interface of the host system, the InterfaceConfiguration State ends, thereby enabling data communication betweenthe bar code symbol reading device 151′ and the host system over thegiven interface. In this manner, the data transmission subsystem of barcode symbol reading device 151′ is able to automatically configureitself such that its communication interface is suitable forcommunication to the communication interface of the host system.

In the Object Detect State, the control circuitry 411A automaticallygenerates enable signal E₁=1 so as to enable object sensing circuit 425and an object detection circuit 427. When an object is presented withinthe object detection field, the object is automatically detected by theobject sensing circuit 425 and an object detection circuit 427. Inresponse thereto, the object detection circuit 427 automaticallygenerates a control activation signal A₁=1.

When control activation signal A₁=1 is detected by the control circuitry411A, the system automatically enters the Bar Code Symbol PresenceDetect state whereby the control circuitry 411A automatically activatesthe laser-based bar code symbol presence detection circuitry 419 byproducing enable signal E₂=1. In addition, the control circuitry 411Aproduces enable signal E₁₀=1, which enables the scanning circuit 413 todrive the VLD and scanning element, thereby generating a laser scanningpattern within the bar code detection field. When the laser scanningpattern scans a bar code symbol on the detected object, scan datasignals are produced there from, collected by the scan photoreceivingcircuit 415 and processed by the A/D conversion circuitry 417 and barcode symbol presence detection circuitry 419 to determine whether a barcode symbol is present within the bar code symbol detection field.

If the presence of a bar code symbol is detected within a predeterminedtime frame defined by timer T1, the system automatically enters the BarCode Symbol Reading State whereby the system control module 411Bautomatically generates enable signal E₃=1 so as to activate the barcode symbol reading module 421. During such operations, the controlcircuitry 411A produces enable signal E₁₀=1, which enables the scanningcircuit 413 to drive the VLD and scanning element, thereby generating alaser scanning pattern within the bar code reading field. When the laserscanning pattern scans a bar code symbol on the detected object, scandata signals are produced there from, collected by the scanphotoreceiving circuit 415, processed by the A/D conversion circuitry417, and decoded by code symbol reading module 421, thereby generatingsymbol character data representative of the decoded bar code symbol.Such symbol character data is buffered in memory (e.g., decoded symboldata buffer).

If the presence of a bar code symbol is not detected within thepredetermined time frame defined by timer T1, the system returns to theObject Detect State whereby the control circuitry 411A automaticallygenerates enable signal E₁=1 so as to enable the object sensingcircuitry 425 and object detection circuitry 427.

In the Bar Code Symbol Reading State, if the detected bar code symbol isread (e.g., A₃=1), and the data transmission switch 155′ is activated(e.g., A₄=1) or the mode select switch 7′ s activated (e.g., A₅=1)within a predetermined time frame defined by Timers T2 and T3, and thesymbol character data is different that the data element stored in thedecoded symbol data buffer, the system automatically enters the DataTransmission State; however, if the detected bar code symbol is not read(e.g., A₃=0) within a predetermined time frame defined by Timer T3, thesystem automatically returns to the Object Detect state.

In the Data Transmission State, in the event that the interfaceconfiguration operation was successful and communication is enabledbetween the data transmission subsystem 423 and the host system, thedata transmission subsystem 423 automatically transmits theproduced/buffered symbol character data to the host system over thecommunication link therebetween; however, in the event that theinterface configuration operation failed and communication is notenabled between the data transmission subsystem 423 and the host system,communication of the produced/buffered symbol character data symbolcharacter data from the data transmission subsystem 423 to the hostsystem fails. The communication link between the bar code symbol readingdevice 151′ and the host system may include a wireless data link (suchas an infra-red link, Bluetooth RF link or IEEE 802.11b RF link) orwired serial data link (such as keyboard wedge link—for examplesupporting XT-, AT- and PS/2-style keyboard protocols, an RS-232 link,USB link, a Firewire (or IEEE 1394) link, an RS-422 link, and RS-485link), a wired parallel data bus, or other common wired interface links(such as an OCIA link, IBM 46XX link, Light Pen Emulation link, LTPNlink).

In an alternate embodiment, the mode select switch 7′ (and itsassociated control function in overriding the data transmission switch155′) can be omitted. In this case, the operation of the datatransmission system 423 in the Data Transmission State in transmittingsymbol character data produced in the Bar Code Symbol Reading Stateoccurs when the system control module 411B detects that the followingcondition has been satisfied: generation of the third control activationsignal (e.g., A₃=1) within a predetermined time period, indicative thatthe bar code symbol has been read, and generation of data transmissioncontrol activation control signal (e.g., A₄=1) produced from datatransmission activation switch 155′ within a predetermined time frame,indicative that the user desires the produced bar code symbol characterdata to be transmitted to the host system or intended device. In thisconfiguration, the device 151′ is not capable of operating as ahand-free presentation scanner (whereby the operator passes objects andassociated bar code symbols though the scanning field of the device inorder to automatically read the bar code symbols therein andautomatically transmit corresponding bar code symbol character stringsto the host system), yet operates solely in a manually-activated datatransmission mode as a hands-on scanner whereby the operator positionsthe scanner so that an object and associated bar code symbol passesthough the scanning field of the device 151′ in order to automaticallyread the bar code symbol therein and then activate the transmission ofthe corresponding bar code symbol data string to the host computer overthe interface enabled during the Interface Configuration State upontimely manual activation (e.g., A₄=1) of the data transmissionactivation switch 155′.

When operating in the manner described above, the data transmissionsubsystem 423 of the bar code symbol reading device 151′ is able toautomatically configure itself such that its interface is suitable forcommunication to the communication interface of the host system.Moreover, the bar code symbol reading device 151′ is capable ofinterfacing to a variety of different host devices in an automatic anderror free manner with minimal human involvement, thus providingsignificant advantages over the prior art bar code symbol readingdevices.

FIGS. 5 through 9C illustrate an embodiment of the data transmissionsubsystem of a bar code symbol reading device 151″ according to thepresent invention that supports automatic configuration of threeexemplary wired serial interfaces (e.g., USB, RS-232, and KBW). As shownin FIG. 5, the data transmission subsystem 523 includes USB interfacecircuitry (e.g., USB engine 551A and USB Transceiver 551B) that, whenactivated, provide a USB interface capable of data communication over aUSB link between port 559 and the USB interface of a host system; RS-232interface circuitry (e.g., RS-232 control 553A and RS-232 Transceiver553B) that, when activated, provide an RS-232 interface capable of datacommunication over an RS-232 link between port 559 and the RS-232interface of a host system; and KBW interface circuitry (e.g., KBWcontrol 555A and KBW Transceiver 555B) that, when activated, provide aKBW interface capable of data communication over a keyboard link betweenport 559 and the keyboard interface of a host system. In addition, thedata transmission subsystem includes a communication control module 557that operates during an interface configuration mode (e.g., theInterface Configuration State as described above) to automaticallyconfigure the three serial interfaces (e.g., USB, RS-232, and KBW)implemented by the data transmission subsystem 523 as illustrated in theflow chart of FIGS. 6A and 6B. The operation of the data transmissionsubsystem 523 is controlled by system control module 511 (via controlsignals communicated over the N bit control bus as shown). In addition,as is conventional, the data transmission system 523 operates inconjunction with bar code symbol decoding module 521, which operatesunder control of system control module 511 to analyze digital scan datasignals D2 (which are derived from the operation of a scanning platformand associated circuitry) to detect and decode bar code symbols onobjects within the scanning field of the device 151″, and produce andbuffer symbol character data representative of the detected and decodedbar code symbols.

During system configuration, the operator selects an interface cablethat uniquely supports one of the three interfaces (e.g., either a USBcable, RS-232 cable or KBW cable) implemented by the data transmissionsubsystem 523, and couples the selected interface cable between port 559and the corresponding interface port on the host system. Examples ofsuch interface cables are shown in FIGS. 9A, 9B and 9C. For example,FIG. 5 illustrates that the operator has coupled a USB interface cablebetween port 559 of the device and the USB port of the host system. Thedotted lines are meant to illustrate alternative coupling schemes (e.g.,from the device 151″ to host systems via the keyboard wedgeinterface/cable or the RS-232 interface/cable).

Upon detecting the occurrence of predetermined event (for example,system power up and initialization as described above), the systemcontrol module 511 controls the communication control module 557 tooperate in the interface configuration mode (e.g., the InterfaceConfiguration State as described above) whereby the three serialinterfaces (e.g., USB, RS-232, and KBW) implemented by the datatransmission subsystem 523 are automatically configured for operation asillustrated in the flow chart of FIGS. 6A and 6B.

As shown, the interface configuration operation begins in steps 601-605by enabling (i.e., activating) the USB interface circuitry (e.g., USBengine 551A and USB Transceiver 551B), disabling (i.e., de-activating)the RS-232 interface circuitry (e.g., RS-232 control 553A and RS-232Transceiver 553B), and disabling (i.e., de-activating) the KBW interfacecircuitry (e.g., KBW control 555A and KBW Transceiver 555B). Theoperation then continues to step 607.

In step 607, the communication control module 557 determines whether theactive USB interface circuitry (e.g., USB engine 551A and USBTransceiver 551B) of device 151″ has established (or is in the processof establishing) a USB communication link to the USB interface of a hostdevice within a first predetermined time period (for example, defined bya timer TUSB).

Typically, a USB link is established with an enumeration sequence asfollows. First, the USB interface of the host system (for descriptivepurposes referred to below as “Host System”) sends a SETUP packetfollowed by a DATA packet to USB address 0 requesting the Devicedescriptor. The USB interface circuitry (e.g., USB engine 551A and USBTransceiver 551B) of device 151″ receives and decode the request, andretrieves the requested Device descriptor from programmed memory. TheHost System performs a control read sequence and the USB interfacecircuitry (e.g., USB engine 551A and USB Transceiver 551B) of device151″ responds by sending the Device Descriptor over the USB bus. Afterreceiving the Device Descriptor, the Host System sends a SETUP packetfollowed by a DATA packet to address 0 assigning a new USB address todevice 151″. The USB interface circuitry (e.g., USB engine 551A and USBTransceiver 551B) of device 151″ receives these packets and stores thenew address in program memory (e.g., USB Device Address Register). TheHost System sends a request for the Device descriptor using the new USBaddress. The USB interface circuitry (e.g., USB engine 551A and USBTransceiver 551B) of device 151″ receives and decodes this request, andretrieves the requested Device descriptor from programmed memory. TheHost System performs a control read sequence and the USB interfacecircuitry (e.g., USB engine 551A and USB Transceiver 551B) of device151″ responds by sending the Device Descriptor over the USB bus. Thisrequest/control read process is repeated to provide the Host System withthe Configuration and Report descriptors. The Host System then sends aSet Configuration request. The USB interface circuitry (e.g., USB engine551A and USB Transceiver 551B) of device 151″ receives and decodes thisrequest, thereby establishing the USB link between the device 151″ andthe Host System.

In this configuration, the operations of step 607 may be realized bycommunication between the communication control module 557 and the USBengine 551 to test whether this enumeration process is ongoing (or hascompleted). Such information is preferably provided to thecommunications control module 557 by reading the appropriate field in aControl Status Register (for example, the USB Control EndpointRegister), which is maintained by the USB engine 551 as this enumerationsequence is performed.

If, in step 607, the communication control module 557 determines thatthe active USB interface circuitry (e.g., USB engine 551A and USBTransceiver 551B) of device 151″ has established (or is in the processof establishing) a USB communication link to the USB interface of a hostdevice within the first predetermined time period, the interfaceconfiguration operations ends, thereby enabling data communicationbetween the bar code symbol reading device 151″ and the host system overthe USB link therebetween. Otherwise the operation continues to step 609and 611.

In steps 609 and 611, the USB interface circuitry (e.g., USB engine 551Aand USB Transceiver 551B) is disabled (i.e., deactivated), and theRS-232 interface circuitry (e.g., RS-232 control 553A and RS-232Transceiver 553B) is enabled (i.e., activated). Note that the KBWinterface circuitry (e.g., KBW control 555A and KBW Transceiver 555B)remains disabled (i.e., de-activated). The operation then continues tostep 613.

In step 613, the communication control module 557 determines whether theactive RS-232 interface circuitry (e.g., RS-232 Control 553A and RS-232Transceiver 553B) of device 151″ has established (or is in the processof establishing) an RS-232 communication link to the RS-232 interface ofa host device within a second predetermined time period (for example,defined by a timer T_(RS-232)).

An RS-232 communication link involves asynchronous serial communication(e.g., a clock signal is not sent with the data). Instead, each dataword (8 bits) is synchronized using its start bit. As shown in FIG. 7, atypical RS-232 waveform (in 8N1 format) involves the Start Bit (Logic0/Space/+10V), 8 Data bits (the least significant bit is sent first) anda Stop Bit (Logic 1/Mark/10V). The data sent using this method is framedbetween the Start Bit and Stop Bit. This waveform applies to theTransmit Data (TD) and Receive Data (RD) lines of the RS-232 interface.There are other lines used to set-up and control communication overthese two serial channels including the following:

-   i) Request to Send (RTS) line—informs the DCE (Scanning Device) that    the DTE (Host System) is ready to exchange data;-   ii) Clear to Send (CTS) line—informs the DTE (Host System) that the    DCE (Scanning Device) is ready to exchange data;-   iii) Data Set Ready (DSR) line—informs the DTE (Host System) that    the DCE (Scanning Device) is ready to establish a link;-   iv) Signal Ground (SG)—provides a common ground signal; and-   v) Data Terminal Ready (DTR) line—informs the DCE (Scanning Device)    that the DCE (Host) is ready to establish a link.

These lines are also driven at RS-232 logic levels (e.g., +/−10 Volts).Note that the logic levels of such RS-232 signals are greater inmagnitude than the logic levels of the other two interfaces. Morespecifically, the logic levels of the KBM interface and USB interfaceare both 0/5 Volts.

In this configuration, the operations of step 613 may be realized bycommunication between the communication control module 557 and theactive RS-232 interface circuitry (e.g., RS-232 Control 553A and/orRS-232 Transceiver 553B) of device 151″ to test the signal levels of oneor more lines of the RS-232 interface (for example, the DTR line) todetermine if such signal levels correspond to RS-232 logic levels (andthus do not correspond to the expected signal levels of a USB interfaceand KBW interface). For example, this determination can be accomplishedby testing if the signal levels of one or more lines of the RS-232interface (for example, the DTR line) is greater than 8.5 volts. If thistest is positive, the signal levels correspond to the expected RS-232logic levels and do not correspond to the expected signal levels of aUSB interface and KBW interface.

If, in step 613, the communication control module 557 determines thatthe active RS-232 interface circuitry (e.g., RS-232 Control 553A andRS-232 Transceiver 553B) of device 151″ has established (or is in theprocess of establishing) an RS-232 communication link to the RS-232interface of a host device within a second predetermined time period,the interface configuration operations ends, thereby enabling datacommunication between the bar code symbol reading device 151″ and thehost system over the RS-232 link therebetween. Otherwise the operationcontinues to step 615 and 617.

In steps 615 and 617, the RS-232 interface circuitry (e.g., RS-232control 553A and RS-232 Transceiver 553B) is disabled (i.e.,deactivated) and the KBW interface circuitry (e.g., KBW control 555A andKBW Transceiver 555B) is enabled (i.e., activated) and the interfaceconfiguration operations end. Note that the USB interface circuitry(e.g., USB engine 551A and USB Transceiver 551B) remains disabled (i.e.,de-activated). Such operation enables data communication between the barcode symbol reading device 151″ and the host system over a KBW linktherebetween.

As shown in FIGS. 8A and 8B, the KBW interface for AT and PS/2-stylekeyboards implements a bi-directional protocol. The KBW interface cansend data to the host system and the host system can send data to theKBW interface. The host system has the ultimate priority over direction.It can at anytime (although the not recommended) send a command to theKBW interface. The KBW interface is free to send data to the host systemwhen both the KBD Data and KBD Clock lines are high (Idle). The KBDClock line can be used as a Clear to Send line. If the host system takesthe KBD Clock line low, the KBW interface will buffer any data until theKBD Clock is released (i.e., goes high). In the event that the hostsystem takes the KBD Data line low, the KBW interface will prepare toaccept a command from the host system.

Communication from the KBW interface to the host system is shown in FIG.8A. The transmission of data in this forward direction (i.e., KBWinterface to Host) is done with a frame of 11 bits. The first bit is aStart Bit (Logic 0) followed by 8 data bits (LSB First), one Parity Bit(Odd Parity) and a Stop Bit (Logic 1). Each bit should be read on thefalling edge of the clock. The above waveform represents a one bytetransmission from the KBW interface. The KBW interface may not generallychange it's data line on the rising edge of the clock as shown in thediagram. The data line only has to be valid on the falling edge of theclock. The KBW interface will generate the clock. The frequency of theclock signal typically ranges from 20 to 30 KHz. The Least SignificantBit is always sent first.

Communication from the host system to the KBW interface is shown in FIG.8B. The Host system initiates this communication by taking the KBD dataline low. However, to prevent the KBW interface from sending data at thesame time that the host system attempts to send data to the KBWinterface, it is common to take the KBD Clock line low for more than 60us. This is more than one bit length. Then the KBD data line is takenlow, while the KBD clock line is released. The KBW interface will startgenerating a clock signal on it's KBD clock line. This process can takeup to 10 mS. After the first falling edge has been detected, the Hostsystem can load the first data bit on the KBD Data line. This bit willbe read into the KBW interface on the next falling edge, after which thehost system can place the next bit of data. This process is repeated forthe 8 data bits. After the data bits come an Odd Parity Bit. Once theParity Bit has been sent and the KBD Data Line is in a idle (High) statefor the next clock cycle, the KBW interface acknowledges the receptionof the new data. The KBW interface does this by taking the KBD Data linelow for the next clock transition. If the KBD Data line is not idleafter the 10th bit (Start, 8 Data bits+Parity), the KBW interface willcontinue to send a KBD Clock signal until the KBD Data line becomesidle.

As described above, the system control module 511 controls thecommunication control module 557 to operate in the interfaceconfiguration mode to automatically configure the interfaces of the datatransmission subsystem 523. In addition, the system control module 511provides an enable signal (A₃=1) to the bar code symbol reading module521. In response thereto, the bar code symbol reading module 521analyzes digital scan data signals D2 (which are derived from theoperation of a scanning platform and associated circuitry) to detect anddecode bar code symbols on objects within the scanning field of thedevice 151″, produce bar code symbol character data representative ofthe detected and decoded bar code symbols, and automatically generate athird control activation signal A₃ indicative of a successful decodingoperation (for example, A₃=0 is indicative that a successful decodingoperation has not occurred, and A₃=1 is indicative that a successfuldecoding operation has occurred). As shown in FIG. 5, the third controlactivation signal A₃ is provided to the system control module 511 fordetection, analysis and programmed response.

The particular interface of the data transmission subsystem 52 which isenabled (e.g., activated) by the automatic interface configurationoperations described above, is utilized for the communication of symbolcharacter data from the device 151″ to the host system. Morespecifically, under control of the system control module 511, thisparticular interface operates to automatically transmit symbol characterdata (produced by the operation of the bar code symbol reading module521 as described above) to the host system over the communication linktherebetween, if any.

Preferably, the operation of the particular interface in automaticallytransmitting such symbol character data occurs when the system controlmodule 511 detects that either one of the following two conditions havebeen satisfied:

-   i) generation of the third control activation signal (e.g., A₃=1)    within a predetermined time period, indicative that the bar code    symbol has been read, and generation of data transmission control    activation control signal (e.g., A₄=1) produced from data    transmission activation switch 155 within a predetermined time    frame, indicative that the user desires the produced bar code symbol    character data to be transmitted to the host system or intended    device; or-   ii) generation of the third control activation signal (e.g., A₃=1)    within a predetermined time period, indicative that the bar code    symbol has been read, and generation of fifth control activation    signal A₅ (e.g., A₅=1).    -   151

Such control enables the bar code symbol reading device 151″ to operatein automatic data transmission mode (e.g., A₅=1) as a hand-freepresentation scanner whereby the operator passes objects and associatedbar code symbols though the scanning field of the device 151″ in orderto automatically read the bar code symbols therein and automaticallytransmit corresponding bar code symbol character strings to the hostsystem, and operate in the manually-activated data transmission mode(e.g., A₅=0) as a hands-on scanner whereby the operator positions thescanner so that an object and associated bar code symbol passes thoughthe scanning field of the device 151″ in order to automatically read thebar code symbol therein and then activate the transmission of thecorresponding bar code symbol data string to the host computer upontimely manual activation (e.g., A₄=1) of the data transmissionactivation switch.

In an alternate embodiment, the mode select sensor 7 (and its associatedcontrol function in overriding the data transmission switch 155) can beomitted. In this case, the operation of the particular interface inautomatically transmitting such symbol character data occurs when thesystem control module 511 detects that following condition has beensatisfied: generation of the third control activation signal (e.g.,A₃=1) within a predetermined time period, indicative that the bar codesymbol has been read, and generation of data transmission controlactivation control signal (e.g., A₄=1) produced from data transmissionactivation switch 155 within a predetermined time frame, indicative thatthe user desires the produced bar code symbol character data to betransmitted to the host system or intended device. In thisconfiguration, the device 151″ is not capable of operating as ahand-free presentation scanner (whereby the operator passes objects andassociated bar code symbols though the scanning field of the device inorder to automatically read the bar code symbols therein andautomatically transmit corresponding bar code symbol character stringsto the host system), yet operates solely in a manually-activated datatransmission mode as a hands-on scanner whereby the operator positionsthe scanner so that an object and associated bar code symbol passesthough the scanning field of the device 151 in order to automaticallyread the bar code symbol therein and then activate the transmission ofthe corresponding bar code symbol data string to the host computer upontimely manual activation (e.g., A₄=1) of the data transmissionactivation switch 155′.

When operating in the manner described above, the data transmissionsubsystem 523 of the bar code symbol reading device 151″ is able toautomatically configure itself such that its interface is suitable forcommunication to the communication interface of the host system.Moreover, the bar code symbol reading device 151″ is capable ofinterfacing to a variety of different host devices in an automatic anderror free manner with minimal human involvement, thus providingsignificant advantages over the prior art bar code symbol readingdevices.

Preferably, the bar code symbol decode module 521, system control module511, communication control module 557, USB engine 551A, RS-232 control553A, and KBW control 555A are realized utilizing one or more programmedmicroprocessors (or microcontrollers) and accessible memory. Forexample, the CY7C637XX family of microcontrollers, which is availablefrom Cypress Semiconductor, can be used to implement the USB engine andother control modules. The CY7C637XX family of microcontrollers are8-bit RISC One Time Programmable (OTP) microcontrollers with embeddedsupport for USB, PS/2 and serial communications, the details of whichcan be found at http://www.cypress.com/pub/datasheets/cy7c637xs.pdf.

FIG. 9A illustrates an exemplary interface cable that uniquely supportsa USB link between the bar code symbol reading device 151″ and the USBport of a host system. As shown, the interface cable includes a 10-pinmodular jack that plugs into the communication port 559 of the bar codesymbol reading device 151″ and USB A type connector that plugs into theUSB port of the host system.

FIG. 9B illustrates an exemplary interface cable that uniquely supportsan RS-232 link between the bar code symbol reading device 151″ and theRS-232 (e.g., serial) port of a host system. As shown, the interfacecable includes a 10-pin modular jack that plugs into the communicationport 559 of the bar code symbol reading device 151″ and 9-Pin D-TypeConnector that connects to the RS-232 serial port of the host system.Note that this cable has a built-in power jack that enables the operatorto couple a power adapter thereto. Power from the power adapter issupplied via the interface cable to port 559 to the bar code symbolreading device 151″ for distribution to the electrical components of thedevice 151″.

FIG. 9C illustrates an exemplary interface cable that uniquely supportsan Keyboard Wedge link between the bar code symbol reading device-151″and the keyboard port of a host system (in addition to an Keyboard linkbetween a keyboard attached thereto and the same keyboard port of thehost system. As shown, the interface cable includes a 10-pin modularjack that plugs into the communication port 559 of the bar code symbolreading device 151″ and a “Y” termination with a 5-pin DIN femaleconnector on one end, and a 6-pin mini DIN male on the other. The DINconnectors are coupled to a keyboard and to the keyboard port of thehost system. Note that this cable has a built-in power jack that enablesthe operator to couple a power adapter thereto. Power from the poweradapter is supplied via the interface cable to port 559 to the bar codesymbol reading device 151″ for distribution to the electrical componentsof the device 151″.

FIGS. 10A and 10B illustrate an alternative embodiment of the presentinvention wherein the bar code symbol reading device 151′″ is operablycoupled to a base unit 211 by way of a one way or two way communicationlink 213 therebetween. The communication link 213 may be a wireless link(such as an infra-red link, Bluetooth RF link or IEEE 802.11b RF link)or wired serial data link (such as keyboard wedge link—for examplesupporting XT-, AT- and PS/2-style keyboard protocols, an RS-232 link,USB link, a Firewire (or IEEE 1394) link, an RS-422 link, and RS-485link), a wired parallel data bus, or other common wired interface links(such as an OCIA link, IBM 46XX link, Light Pen Emulation link, LTPNlink). As shown in FIG. 10B, the base unit 211 mechanically supports thebar code symbol reading device 151′″ when the bar code symbol readingdevice 151′″ is removably placed therein. Alternatively, the base unit211 may not be used to mechanically support the bar code symbol readingdevice 151′″, yet function as a communications interface adapter betweenthe bar code symbol reading device 151′″ and the host system.

As shown, the base unit 211 includes the automatically-configurable datatransmission subsystem 523 as described above that supports automaticconfiguration of three exemplary wired serial interfaces (e.g., USB,RS-232, and KBW). During system configuration, the operator selects aninterface cable that uniquely supports one of the three interfaces(e.g., either a USB cable, RS-232 cable or KBW cable) implemented by thedata transmission subsystem 523, and couples the selected interfacecable between port 559 and the corresponding interface port on the hostsystem. Examples of such interface cables are shown in FIGS. 9A, 9B and9C. For example, FIG. 5 illustrates that the operator has coupled a USBinterface cable between port 559 of the device and the USB port of thehost system. The dotted lines are meant to illustrate alternativecoupling schemes (e.g., from the device 151″ to host systems via thekeyboard wedge interface/cable or the RS-232 interface/cable).

Upon detecting the occurrence of programmed event (for example, systempower up and initialization), the system control module 215 controls thecommunication control module 557 to operate in the interfaceconfiguration mode (e.g., the Interface Configuration State as describedabove) whereby the three serial interfaces (e.g., USB, RS-232, and KBW)implemented by the data transmission subsystem 523 are automaticallyconfigured for operation as illustrated in the flow chart of FIGS. 6Aand 6B. After the completion of such automatic configurations, one ofthe three serial interfaces of the base unit is activated, and the othertwo interfaces are disabled.

After each successful reading of a bar code symbol by the bar codesymbol reading device 151′″, symbol character data (representative ofthe read bar code symbol) is generated and then subsequently producessymbol character data collected from the same read bar code symbol isautomatically transmitted to the base unit by way of the communicationlink 213. And the base unit 211 forwards such data to the host systemover the interface activated during the interface configurationoperations of the base unit.

In this manner, the data transmission subsystem of base unit 211 is ableto automatically configure itself such that its interface is suitablefor communication to the communication interface of the host system.Moreover, the bar code symbol reading device and base unit is thuscapable of interfacing to a variety of different host devices in anautomatic and error free manner with minimal human involvement, thusproviding significant advantages over the prior art bar code symbolreading devices.

As described herein, the present invention is embodied in ahand-holdable laser scanning bar code symbol reading device. However,the present invention is not limited in this respect and can be readilyadapted for use in any bar code symbol reading system that reads barcode symbols (including one-dimensional and two-dimensional barcodes ofany format) affixed to objects proximate thereto, produces symbolcharacter data representative of such bar codes, and transmits suchsymbol character data to a host system. Advantageously, the presentinvention enables automatic configuration of communication between thebar code symbol reading system and the host device. Moreover, the barcode symbol reading system is thus capable of interfacing to a varietyof different host devices in an automatic and error free manner withminimal human involvement, thus providing significant advantages overthe prior art bar code symbol reading devices. Applicable bar codereading systems include laser-based presentation bar code readingsystems, laser-based in-counter bar code reading systems, laser-basedwearable bar code reading systems, wand-type bar code reading system asdescribed in U.S. Pat. No. 3,991,299 to Chadina, Jr. et al., hereinincorporated by reference in its entirety, and hand-holdable (orpresentation or in-counter and wearable) CCD-based bar code symbolreading devices that illuminate the bar code scanning field with an LEDlight source (or other flash light source) as described in U.S. Pat. No.5,932,862 to Hussey et al., U.S. Pat. No. 5,780,834 to Havens et al.,and U.S. Pat. No. 5,723,853 to Longacre, Jr. et al., herein incorporatedby reference in their entirety, and hand-holdable (or presentation orin-counter and wearable) CCD-based bar code symbol reading devices thatilluminate the bar code scanning field with a planar laser illuminationbeam (PLIM) as described in U.S. patent application Ser. No. ______(Attorney Docket 108-127USA000), entitled “Method and System forProducing Digital Images of Objects With Substantially ReducedSpeckle-Noise Power By Illuminating Said Objects withWavefront-Controlled Planar Laser Illumination Beams”, filed Sep. 17,2001, herein incorporated by reference in its entirety.

It is understood that the bar code symbol reading systems (including thelaser scanning modules, laser scanning engines, and control schemes) ofthe illustrative embodiments as described above may be modified in avariety of ways which will become readily apparent to those skilled inthe art of having the benefit of the novel teachings disclosed herein.All such modifications and variations of the illustrative embodimentsthereof shall be deemed to be within the scope and spirit of the presentinvention as defined by the claims to Invention appended hereto.

1-20. (canceled)
 21. A device, operably coupled between a bar codesymbol reading engine that reads bar code symbols affixed to objectsproximate thereto and produces symbol character data representative ofsuch bar code symbols and a host system, said device comprising: a datatransmission subsystem that communicates said symbol character data to acommunication interface of the host system over a communication linktherebetween; wherein said data transmission subsystem implements aplurality of different communication interfaces and wherein, during aninterface configuration mode of operation, the data transmissionsubsystem automatically cycles through at least one of said plurality ofdifferent communication interfaces whereby, for a given communicationinterface, the data transmission subsystem selectively activates thegiven communication interface while disabling the other communicationinterfaces and tests the communication link between the givencommunication interface and the host system to ascertain if the givencommunication interface corresponds to the communication interface ofthe host system.
 22. The device of claim 21, wherein said interfaceconfiguration mode of operation is carried out when the device isinitially powered up.
 23. The device of claim 21, wherein, in saidinterface configuration mode of operation, upon detecting that saidgiven communication interface corresponds to the communication interfaceof the host system, the interface configuration mode of operation ends,thereby enabling subsequent data communication between the bar codesymbol reading engine and the host system over the given communicationinterface.
 24. The device of claim 21, wherein said host system isselected from the group comprising: an electronic cash register system,a data collection device, and a data storage and/or processing device.25. The bar code symbol reading device of claim 1, wherein at least onecommunication interface implemented by the data transmission system ofthe device and the communication interface of the host system provides awireless data link between the device and the host system.
 26. Thedevice of claim 25, wherein said wireless data link is selected from thegroup comprising: an infra-red link, a Bluetooth RF link, and an IEEE802.11b RF link.
 27. The device of claim 21, wherein at least onecommunication interface implemented by the data transmission subsystemand the communication interface of the host system provides a wiredserial data link between the device and the host system.
 28. The deviceof claim 27, wherein said wired serial data link is selected from thegroup comprising: a keyboard wedge link, an RS-232 link, USB link, anIEEE 1394 link, an RS-422 link, and a RS-485 link.
 29. The device ofclaim 21, wherein at least one communication interface implemented bythe data transmission system of the device and the communicationinterface of the host system provides a wired parallel data bus.
 30. Thedevice of claim 21, wherein at least one communication interfaceimplemented by the data transmission system of the device and thecommunication interface of the host system provides a wiredcommunication link selected from the group comprising: an OCIA link, anIBM 46XX link, a Light Pen Emulation link, and a LTPN link.
 31. Thedevice of claim 21, wherein the data transmission subsystem maintains astatus register that stores information related to the establishment ofa communication link between the data transmission subsystem and thehost system over a specific interface implemented by the datatransmission subsystem, and wherein, in the interface configuration modeof operation, the data transmission subsystem reads said informationstored in said status register to ascertain if the given communicationinterface corresponds to the communication interface of the host system.32. The device of claim 21, wherein, in the interface configuration modeof operation, the data transmission subsystem tests the signal levels ofthe given communication interface to ascertain if the givencommunication interface corresponds to the communication interface ofthe host system.
 33. The device of claim 21, integrated in a base unitthat mechanically supports a hand-holdable bar code symbol readingdevice that houses said bar code symbol reading engine.
 34. The deviceof claim 21, integrated into a communication adapter operably coupledbetween a bar code symbol reading device that houses said bar codesymbol reading engine and said host system. 35-55. (canceled)
 56. A barcode symbol reading system comprising: a host system; a bar code symbolreading device including a bar code symbol reading subsystem that readsbar code symbols affixed to objects proximate thereto and producessymbol character data representative of such bar code symbols; a datatransmission subsystem, operably coupled between the bar code readingsubsystem and the host system, that communicates such symbol characterdata to a communication interface of a host system over a communicationlink therebetween, wherein said data transmission subsystem implements aplurality of different communication interfaces, and wherein, during aninterface configuration mode of operation, the data transmissionsubsystem automatically cycles through at least one of said plurality ofdifferent communication interfaces whereby, for a given communicationinterface, the data transmission subsystem selectively activates thegiven communication interface while disabling the other communicationinterfaces and tests the communication link between the givencommunication interface and the host system to ascertain if the givencommunication interface corresponds to the communication interface ofthe host system.
 57. The bar code symbol reading system of claim 56,wherein said interface configuration mode of operation is carried outwhen the device is initially powered up.
 58. The bar code symbol readingsystem of claim 56, wherein, in said interface configuration mode ofoperation, upon detecting that said given communication interfacecorresponds to the communication interface of the host system, theinterface configuration mode of operation ends, thereby enablingsubsequent data communication between the bar code symbol reading deviceand the host system over the given communication interface.
 59. The barcode symbol reading system of claim 56, for use as a point of salesystem, a data collection device, or a data storage and/or processingdevice.
 60. The bar code symbol reading system of claim 56, wherein atleast one communication interface implemented by the data transmissionsystem of the device and the communication interface of the host systemprovides a wireless data link between the device and the host system.61. The bar code symbol reading system of claim 60, wherein saidwireless data link is selected from the group comprising: an infra-redlink, a Bluetooth RF link, and an IEEE 802.11b RF link.
 62. The bar codesymbol reading system of claim 56, wherein at least one communicationinterface implemented by the data transmission system of the device andthe communication interface of the host system provides a wired serialdata link between the device and the host system.
 63. The bar codesymbol reading system of claim 62, wherein said wired serial data linkis selected from the group comprising: a keyboard wedge link, an RS-232link, USB link, an IEEE 1394 link, an RS-422 link, and a RS-485 link.64. The bar code symbol reading system of claim 56, wherein at least onecommunication interface implemented by the data transmission system ofthe device and the communication interface of the host system provides awired parallel data bus.
 65. The bar code symbol reading system of claim56, wherein at least one communication interface implemented by the datatransmission system of the device and the communication interface of thehost system provides a wired communication link selected from the groupcomprising: an OCIA link, an IBM 46XX link, a Light Pen Emulation link,and a LTPN link.
 66. The bar code symbol reading system of claim 56,wherein the reading of a bar code symbol and subsequent communication ofthe symbol character data corresponding thereto to the host systemoccurs automatically without the need for human interaction to activatesuch operations.
 67. The bar code symbol reading system of claim 56,wherein the reading of the bar code symbol occurs automatically withoutthe need for human interaction to activate such operation, and thesubsequent transfer of the symbol data corresponding thereto to the hostsystem is manually-activated by a user interaction with a datatransmission switch.
 68. The bar code symbol reading device of claim 56,wherein the reading of the bar code symbol and the subsequent transferof the symbol data corresponding thereto to the host system ismanually-activated by a user interaction with a trigger mechanism. 69.The bar code symbol reading system of claim 56, wherein the datatransmission subsystem maintains a status register that storesinformation related to the establishment of a communication link betweenthe data transmission subsystem and the host system over a specificinterface implemented by the data transmission subsystem, and wherein,in the interface configuration mode of operation, the data transmissionsubsystem reads said information stored in said status register toascertain if the given communication interface corresponds to thecommunication interface of the host system.
 70. The bar code symbolreading system of claim 56, wherein, in the interface configuration modeof operation, the data transmission subsystem tests the signal levels ofthe given communication interface and the host system to ascertain ifthe given communication interface corresponds to the communicationinterface of the host system.
 71. The bar code symbol reading system ofclaim 56, wherein said bar code symbol reading subsystem is selectedfrom the group comprising: a laser-based bar code reader, a CCD-basedbar code symbol reader that illuminates the bar code scanning field withan LED light source, and a CCD-based bar code symbol reader thatilluminates the bar code scanning field with a planar laser illuminationbeam.
 72. The bar code symbol reading system of claim 56, wherein saidbar code symbol reading subsystem comprises a hand-holdable scanner. 73.The bar code symbol reading system of claim 56, wherein said bar codesymbol reading subsystem comprises a presentation scanner.
 74. The barcode symbol reading system of claim 56, wherein said bar code symbolreading subsystem comprises an in-counter scanner.
 75. The bar codesymbol reading system of claim 56, wherein said bar code symbol readingsubsystem comprises a wearable scanner.